package com.blog.back.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.blog.dto.PageDTO;
import com.blog.entity.ArticleEntity;
import com.blog.utils.PageUtils;
import com.blog.vo.ArticleClassificationVO;
import com.blog.vo.ArticleDetailVO;
import com.blog.vo.ArticleListVO;
import com.blog.vo.ArticleVO;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 
 *
 * @author codedorado
 * @email codedorado@foxmail.com
 * @date 2020-08-15 15:26:05
 */
public interface ArticleService extends IService<ArticleEntity>, IPageCheck {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 根据 ID 查询
     *
     * @param id 主键ID
     */
    public ArticleEntity getById(Long id);

    /**
     * 根据文章id和用户id查询文章以及上一篇下一篇的信息
     *
     * @return
     */
    public ArticleDetailVO getArticleDetailById(Long articleId, Long usersId);

    /**
     * 根据 用户的id 与页数查询文章
     * @param pageDTO
     * @return
     */
    public ArticleListVO listByUserPage(PageDTO pageDTO);

    /**
     * 根据用户id 与关键字查询文章
     * @param pageDTO
     * @return
     */
    public ArticleListVO listByUserWithKeywordsPage(PageDTO pageDTO);

    /**
     * 显示点击量前三的文章
     */
    public List<ArticleVO> litsMostArticles(Long userId);

    /**
     * 定时任务，每天都刷新到redis缓存中一次
     */
    public List<ArticleVO> selectScheduled(Long userId);

    /**
     * 根据用户id查找自我介绍
     * @param usersId
     * @return
     */
    public ArticleDetailVO getIntroduceByUserId(Long usersId);

    public List<ArticleEntity> listDesc();

}

